package com.vaca.myapplication;

import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.vaca.myapplication.BleUtils;

// 定义一个抽象类AbstractBleActivity，该类继承自AppCompatActivity
// 这个类包含了处理蓝牙相关的通用流程
public abstract class AbstractBleActivity extends AppCompatActivity {

    // 当活动第一次创建时调用这个方法
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 检查设备的蓝牙是否已经开启
        if (!BleUtils.isBluetoothEnabled(this)) {
            // 若未开启，则尝试开启设备蓝牙
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                BleUtils.enableBluetooth(this);
            }
            // 提前返回，因为enableBluetooth可能会导致回调onActivityResult
            return;
        }

        // 如果蓝牙已经开启，设置蓝牙外围设备的提供者
        setupBlePeripheralProvider();
    }

    // 定义一个抽象方法，具体实现由子类完成
    // 该方法用于设置蓝牙外围设备的提供者
    abstract void setupBlePeripheralProvider();

    // 当startActivityForResult()的调用结束后，会回调这个方法
    // requestCode为请求码，resultCode为结果码，data为带回的数据
    @Override
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // 检查请求码是否为开启蓝牙的请求码
        if (requestCode == BleUtils.REQUEST_CODE_BLUETOOTH_ENABLE) {
            // 如果用户没有选择开启蓝牙功能
            if (!BleUtils.isBluetoothEnabled(this)) {
                // 显示一条消息提示用户
                Toast.makeText(this, "fuck", Toast.LENGTH_LONG).show();
                // 提前返回
                return;
            }

            // 如果用户开启了蓝牙，则再次设置蓝牙外围设备的提供者
            setupBlePeripheralProvider();
        }
    }
}